package com.berchen.算法.排序;

import java.time.Duration;
import java.time.Instant;

/**
 * 冒泡排序
 * 相邻两个元素进行比较
 */
public class BubblingSort {

    public static void main(String[] args) {
        int[] map={10,-1,5,9,0,40};
        BubblingSort bubblingSort = new BubblingSort();

        int [] testArr=new int[80000];
        for(int i =0;i< testArr.length;i++){
            testArr[i]=(int)(Math.random()*80000);
        }
        Instant start=Instant.now();
        bubblingSort.bubbling(testArr);
        Instant end = Instant.now();
        System.out.println(Duration.between(start,end).toMillis()); // 14885 毫秒
    }

    /**
     * 冒泡排序
     * @param map
     */
    public void bubbling(int[] map){

        for(int i =0;i<map.length;i++){
            boolean flag=false; // 优化代码  当有一遍循环 没有交换数据 说明该顺序已经是我们想要打顺序了
            for (int j = 0; j < map.length-i-1; j++) {

                if(map[j]>=map[j+1]){
                    int temp=map[j];
                    map[j]=map[j+1];
                    map[j+1]=temp;
                    flag=true;
                }
            }
            if(!flag){
                break;
            }
        }
    }
}
